package com.likou;

import java.util.HashMap;
import java.util.Map;

/**
 * Author: 陈桂明
 * Date: 2025/4/11 10:51
 * Description: q560
 */
public class q560 {
    // public int subarraySum(int[] nums, int k) {
    //     int ans = 0;
    //
    //     int right;
    //     for (int left = 0; left < nums.length; left++) {
    //         int sum = nums[left];
    //         if (sum == k) {
    //             ans++;
    //         }
    //
    //         right = left + 1;
    //
    //         while (right < nums.length) {
    //             sum += nums[right];
    //             right++;
    //
    //             if (sum == k) {
    //                 ans++;
    //             }
    //         }
    //     }
    //     return ans;
    // }

    public int subarraySum(int[] nums, int k) {
        int ans = 0;
        Map<Integer, Integer> map = new HashMap<>();
        map.put(0, 1);
        int sum = 0;

        for (int num : nums) {
            sum += num;

            if (map.containsKey(sum - k)) {
                ans += map.get(sum - k);
            }

            map.put(sum, map.getOrDefault(sum, 0) + 1);
        }

        return ans;
    }
}
